Fixes to get libc++ building on sun solaris. Patch from C Bergstrom. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@222794 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/__config b/include/__config index d34bb7c..e1e2359 100644 --- a/include/__config +++ b/include/__config
@@ -644,6 +644,8 @@ #define _LIBCPP_ELAST __ELASTERROR #elif defined(__APPLE__) // Not _LIBCPP_ELAST needed on Apple +#elif defined(__sun__) +#define _LIBCPP_ELAST ESTALE #else // Warn here so that the person doing the libcxx port has an easier time: #warning This platform's ELAST hasn't been ported yet
diff --git a/include/__locale b/include/__locale index 5ccd795..4711620 100644 --- a/include/__locale +++ b/include/__locale
@@ -29,8 +29,10 @@ # if __ANDROID_API__ <= 20 # include <support/android/locale_bionic.h> # endif +#elif defined(__sun__) +# include <support/solaris/xlocale.h> #elif (defined(__GLIBC__) || defined(__APPLE__) || defined(__FreeBSD__) \ - || defined(__sun__) || defined(__EMSCRIPTEN__) || defined(__IBMCPP__)) + || defined(__EMSCRIPTEN__) || defined(__IBMCPP__)) # include <xlocale.h> #endif // __GLIBC__ || __APPLE__ || __FreeBSD__ || __sun__ || __EMSCRIPTEN__ || __IBMCPP__
diff --git a/include/support/solaris/xlocale.h b/include/support/solaris/xlocale.h index 875a39a..6b5b544 100644 --- a/include/support/solaris/xlocale.h +++ b/include/support/solaris/xlocale.h
@@ -14,6 +14,8 @@ #ifndef __XLOCALE_H_INCLUDED #define __XLOCALE_H_INCLUDED +#include <stdlib.h> + #ifdef __cplusplus extern "C" { #endif
diff --git a/include/tuple b/include/tuple index aa7185c..5fc27f9 100644 --- a/include/tuple +++ b/include/tuple
@@ -376,9 +376,9 @@ _LIBCPP_INLINE_VISIBILITY void __swallow(_Tp&&...) _NOEXCEPT {} -template <bool ..._B> +template <bool ..._Pred> struct __all - : is_same<__all<_B...>, __all<(_B, true)...>> + : is_same<__all<_Pred...>, __all<(_Pred, true)...>> { }; template <class _Tp>
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 318c4ce..12e9f4a 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt
@@ -3,6 +3,9 @@ if(WIN32) file(GLOB LIBCXX_WIN32_SOURCES ../src/support/win32/*.cpp) list(APPEND LIBCXX_SOURCES ${LIBCXX_WIN32_SOURCES}) +elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "SunOS") + file(GLOB LIBCXX_SOLARIS_SOURCES ../src/support/solaris/*.c) + list(APPEND LIBCXX_SOURCES ${LIBCXX_SOLARIS_SOURCES}) endif() # Add all the headers to the project for IDEs.
diff --git a/src/support/solaris/xlocale.c b/src/support/solaris/xlocale.c index 39dd8e3..81750a8 100644 --- a/src/support/solaris/xlocale.c +++ b/src/support/solaris/xlocale.c
@@ -17,7 +17,7 @@ #include <limits.h> #include <assert.h> #include <sys/localedef.h> -#include "xlocale.h" +#include "support/solaris/xlocale.h" static _LC_locale_t *__C_locale;